package com.it.gmalllogger.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * desc : 用于接收模拟器生成的数据，并对数据进行处理。
 *
 * @author : code1997
 * @date :2021-01-2021/1/23 12:15
 */
@RestController
@Slf4j
public class LoggerController {

    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;

    /**
     * 接收来自模拟器生成的数据，然后进行处理：
     * 1）将数据落盘。
     * 2）将数据发送给kafka
     * 根据日志类型的不同，发送到不同的kafka主题中去
     * mockLog ：接收到的log。
     *
     * @return ：处理之后的消息。
     */
    @RequestMapping("/applog")
    public String applog(@RequestBody String mockLog) {
        //落盘
        log.info(mockLog);
        //根据日志类型，发送到Kafka的不同主题中。
        JSONObject jsonObject = JSON.parseObject(mockLog);
        if (jsonObject.getJSONObject("start") != null) {
            //启动日志
            kafkaTemplate.send("gmall_start", mockLog);
        } else {
            //事件日志
            kafkaTemplate.send("gmall_event", mockLog);
        }
        return "success";
    }

}
